#include"definicje.h"
#include<stdint.h>
#include<stdio.h>
#include<error.h>
#include<string.h>
#include<stdlib.h>
#include"katalogi.h"
#include"protokol.h"

struct elementListy *katalogi=NULL;
static size_t dlugosc=0;

int wczytajKatalogi(void)
{
   DIR * uchwyt;
   int wynik;
   struct dirent *k;
   struct elementListy *e;

   if(katalogi!=NULL)
   {
      usunKatalogi();
   }
   uchwyt=opendir(".");
   if(uchwyt==NULL)
   {
      perror("opendir");
      return -1;
   }
   do
   {
      k=readdir(uchwyt);
      if(k!=NULL)
      {
	 if(strlen(k->d_name)+1+dlugosc>MAX_PAKIET-rozmiarNaglowka)
	 {
	    break;
	 }
	 e=(struct elementListy*)malloc(sizeof(struct elementListy));
	 if(e==NULL)
	 {
	    fprintf(stderr,"Nie udało się zaalokować pamięci\n");
	    return -1;
	 }
	 memcpy(&(e->katalog),k,sizeof(struct dirent));
	 e->nastepny=katalogi;
	 katalogi=e;
	 dlugosc+=strlen(katalogi->katalog.d_name)+1;
      }
   } while(k!=NULL);
   return 0;
}

void usunKatalogi(void)
{
   struct elementListy *element;
   if(katalogi==NULL)
   {
      return;
   }
   while(katalogi!=NULL)
   {
      element=katalogi->nastepny;
      free(katalogi);
      katalogi=element;
   }
   dlugosc=0;
}

size_t dlugoscListyKatalogow(void)
{
   return dlugosc;
}
